package com.ofsoft.weixin.mp.message;

import java.util.HashMap;
import java.util.Map;

/**
 * 消息请求数据
 * 
 * @author OF
 * @date 2017年10月11日
 */
public class MessageRequest {

	/** 定义外部请求参数 */
	private Map<String, String> request;
	/** 定义系统响应参数 */
	private Map<String, Object> response;

	/**
	 * 接收方帐号（收到的OpenID）
	 */
	private String ToUserName;
	/**
	 * 开发者微信号
	 */
	private String FromUserName;
	/**
	 * 消息创建时间 （整型）
	 */
	private Long CreateTime;
	/**
	 * 消息类型（text/music/news）
	 */
	private String MsgType;
	/**
	 * 事件类型
	 */
	private String Event;

	public MessageRequest(Map<String, String> request) {
		setRequest(request);
		setCreateTime(Long.valueOf(request.get("CreateTime")).longValue());
		setFromUserName(request.get("FromUserName"));
		setMsgType(request.get("MsgType"));
		setToUserName(request.get("ToUserName"));
		setEvent(request.get("Event"));
	}

	public String getEvent() {
		return Event;
	}

	public void setEvent(String event) {
		Event = event;
	}

	public String getMsgType() {
		return MsgType;
	}

	public void setMsgType(String msgType) {
		MsgType = msgType;
	}

	/**
	 * 获取 接收方帐号（收到的OpenID）
	 * 
	 * @return 接收方帐号（收到的OpenID）
	 */
	public String getToUserName() {
		return ToUserName;
	}

	/**
	 * 设置 接收方帐号（收到的OpenID）
	 * 
	 * @return 接收方帐号（收到的OpenID）
	 */
	public String getFromUserName() {
		return FromUserName;
	}

	/**
	 * 获取 消息创建时间 （整型）
	 * 
	 * @return 消息创建时间 （整型）
	 */
	public Long getCreateTime() {
		return CreateTime;
	}

	public void setToUserName(String ToUserName) {
		this.ToUserName = ToUserName;
	}

	public void setFromUserName(String FromUserName) {
		this.FromUserName = FromUserName;
	}

	public void setCreateTime(Long CreateTime) {
		this.CreateTime = CreateTime;
	}

	/**
	 * 返回请求参数
	 * 
	 * @param key
	 * @return
	 */
	public Object getRequestParam(String key) {
		if (this.request == null) {
			return null;
		}
		Object value = request.get(key);

		return value;
	}

	public String getParam(String key) {
		return (String) getRequestParam(key);
	}

	public Map<String, String> getRequest() {
		return request;
	}

	public void setRequest(Map<String, String> request) {
		this.request = request;
	}

	public void addRequestParam(String key, String value) {
		if (request == null) {
			request = new HashMap<String, String>();
		}
		request.put(key, value);
	}

	public Map<String, Object> getResponse() {
		return response;
	}

	public void setResponse(Map<String, Object> response) {
		this.response = response;
	}

}
